# 写一个简单的函数，传入多少次就调用多少次
# 1、需要带传参的函数
def call_eat_apple(num):
    for i in range(num):
        print(f"我吃了{i+1}个苹果")
# call_eat_apple(3) # 就是调用三次
# 2、不需要带传参的函数
def student_info():
    print("来测科技第23期班级正在学习")
    print("来测科技第22期班级正在就业")
    print("来测科技第21期班级已经就业一个月")
    print("来测科技第20期班级已经就业两个月")
# student_info()
# student_info()
# 3、带传参也有返回的函数
def class_info(class_:str) -> str: # class_形参：形式参数
    """
    :param class_:  传递的参数为班级，字符串类型
    :return: 函数的返回值，如果你用来接收并打印的话，就是你定义好的return内容，一个函数只能有一次return，后面的任何代码块都不会被执行
    """
    if class_ == "22":
        return "22期班级正在就业"
    elif class_ == "23":
        return "23期班级正在学习python"
    elif class_ == "24":
        return "24期班级正在学习软测基础"
    else:
        return "没有这个班级"
# class_info() # missing 1 required positional argument ，有一个形参没有传递
# print(class_info("22")) # 我传递的"22"就是实际参数，实参
# print(class_info("23")) # 我传递的"23"就是实际参数，实参
# print(class_info(55)) # 我传递的55就是实际参数，实参
# 4、不带参数，有return返回值的
def student_info_():
    return "大家好，我叫白嘉诚，今年19岁"
# student_info_()
jiac = student_info_() # 接收上面的字符串
new_jiac = jiac + "，正在上23期的课程，学习func"
# print(new_jiac) # 大家好，我叫白嘉诚，今天19岁，正在上23期的课程，学习func
# print(jiac) # 大家好，我叫白嘉诚，今年19岁
"""
print("大家好，我叫{}，来自{}，今年{}岁".format("小白","沈阳","15"))
print(f"大家好，我叫{'小白'}，来自{'沈阳'}，今年{'15'}岁")
print("大家好，我叫%s，来自%s，今年%d岁"%("小白","沈阳",15)) # 格式化占位符：%s是占位字符串，%d是占位int类型，%f占位float类型"""
# 函数题：请你封装一个函数，形参：姓名、年龄、性别、家庭住址，并将个人信息打印出来
def person_info(name:str,age:int,sex:str,address:str) ->str:
    return f"大家好，我叫{name},今年{age}岁，性别为：{sex}，家庭住址在：{address}"
# print(person_info(address="辽宁沈阳", name="小白", sex="男", age=13))
def text(bnunny:str,firefly:str) ->None:
    """
    :param bnunny: 小兔子
    :param firefly: 猎人
    :return: None 没有返回值
    """
    print("%s乖乖"%bnunny)
    print("把门儿开开")
    print("快点儿开开")
    print("%s要进来"%firefly)
# age = int(input("请输入你的年龄"))
"""if age >=0 and age<3:
    for i in range(3):
        text("小白兔","大老虎")
elif 5 > age >=3:
    text("小松鼠","老鼠")"""
# print(help(text))
a = 100 # 全局变量
b = 200 # 全局变量
def sum()->int:
    a = 5 # 局部变量，只有在sum函数里才能找到它
    b = 30 # 局部变量，只有在sum函数里才能找到它
    return a+b
# print(sum()) # 35
"""
优先级：
1、如果函数里有和全局变量同名的局部参数，那么优先走函数里的变量运算
2、如果函数里的变量没有，那么运算的时候会去找全局变量，如果全局也米有就报错
"""
def sum1()->int:
    return a+b
# print(sum1()) # 300
def sum2():
    a = 101
    print(a)
    return "如果有return的话，那么返回的就是这个字符串"
# print(sum2()) # 101？ 100
# 有个需求，我想改变全局变量a的值，在函数里面
def sum3():
    global a  # 引用全局变量的a
    a = 101
    return a
"""print(f"局部变量a的值是：{sum3()}")
print(f"全局变量a的值是：{a}")"""
"""
global：引用全局变量，改掉以后，全局变量的值就会发生变化
但是轻易不要这么去做
"""
a1 = 100
word = "hello"
def text1():
    x = "hello"
    print("x = {}".format(x))
    a1 = 10
    print("函数内部a1 = {}".format(a1))
    global word
    word = "ok"
    print(f"函数内部的word = {word}")
text1()
print("=============================")
print(f"此时的a1值是：{a1}") # 100
print(f"此时的word值是：{word}") # ok
"""
结果按行输出：
1、x = hello
2、函数内部a1 = 10
3、函数内部的word = ok
"""























